package org.example.completed.controller;


import org.example.completed.domain.Product;
import org.example.completed.model.vo.ResultVO;
import org.example.completed.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author ludan
 * @since 2025-04-02
 */
@RestController
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService productService;

    /**
     * 插入产品信息
     * @param product 产品实体
     * @return 插入成功的记录数
     */
    @PostMapping("/insert")
    public ResultVO<?> insert(@RequestBody Product product) {
        productService.insert(product);
        return ResultVO.ok();
    }

    /**
     * 根据 ID 删除产品信息
     * @param id 产品 ID
     * @return 删除成功的记录数
     */
    @DeleteMapping("/delete/{id}")
    public ResultVO<?> deleteById(@PathVariable Integer id) {
        productService.deleteById(id);
        return ResultVO.ok();
    }

    /**
     * 更新产品信息
     * @param product 产品实体
     * @return 更新成功的记录数
     */
    @PutMapping("/update")
    public ResultVO<?> update(@RequestBody Product product) {
        productService.update(product);
        return ResultVO.ok();
    }

    /**
     * 根据 ID 查询产品信息
     * @param id 产品 ID
     * @return 产品实体
     */
    @GetMapping("/select/{id}")
    public ResultVO<Product> selectById(@PathVariable Integer id) {
        Product product = productService.selectById(id);
        return ResultVO.ok(product);
    }

    /**
     * 查询所有产品信息
     * @return 产品列表
     */
    @GetMapping("/selectAll")
    public ResultVO<List<Product>> selectAll() {
        List<Product> products = productService.selectAll();
        return ResultVO.ok(products);
    }


}

